package com.education.ai.dao;

import com.education.ai.entity.AbilityAssessment;

import java.util.List;
import java.util.Optional;

/**
 * 能力评估数据访问接口
 */
public interface AbilityAssessmentDao {
    
    /**
     * 查找所有能力评估
     */
    List<AbilityAssessment> findAll();
    
    /**
     * 根据ID查找能力评估
     */
    Optional<AbilityAssessment> findById(Long id);
    
    /**
     * 根据学生ID查找能力评估
     */
    List<AbilityAssessment> findByStudentId(String studentId);
    
    /**
     * 根据学科查找能力评估
     */
    List<AbilityAssessment> findBySubject(String subject);
    
    /**
     * 根据学生ID和学科查找能力评估
     */
    List<AbilityAssessment> findByStudentIdAndSubject(String studentId, String subject);
    
    /**
     * 查找学生在某学科的最新评估（按时间降序排序）
     */
    List<AbilityAssessment> findByStudentIdAndSubjectOrderByAssessmentTimeDesc(String studentId, String subject);
    
    /**
     * 查找学生在某学科的最新评估（获取第一条记录）
     */
    AbilityAssessment findFirstByStudentIdAndSubjectOrderByAssessmentTimeDesc(String studentId, String subject);
    
    /**
     * 获取学科各维度的平均分
     */
    Object[] getAverageScoresBySubject(String subject);
    
    /**
     * 保存能力评估
     */
    AbilityAssessment save(AbilityAssessment assessment);
    
    /**
     * 删除能力评估
     */
    void deleteById(Long id);
    
    /**
     * 统计总数
     */
    long count();
} 